package com.qingcheng.service;



import com.qingcheng.domain.Goods;
import com.qingcheng.pojo.goods.TbSpu;
import com.qingcheng.util.PageUtil;

import java.util.List;
import java.util.Map;


/**
*
* @author Simon
* @date 2020/07/27
*/
public interface TbSpuService {

    /**
     *  真实的删除数据
     * @param id 表id
     * @return 删除的结果
     */
    boolean removeSpu(String id);

    /**
     * 得到已上架商品的统计和已审核商品的统计
     * @return
     */
    List<Long> counts();

    /**
     * @return 商品回收站显示spu表is_delete字段为1的记录
     */
    PageUtil<TbSpu> CommodityRecyclingStation(Integer PageNum, Integer PageSize, TbSpu tbSpu);

    /**
     * 逻辑删除商品，修改spu表is_delete字段为1，回收商品，修改spu表is_delete字段为0
     * @param id 根据id修改状态
     * @return 修改是否完成
     */
    boolean removeSpuIsDelete(String id);

    /**
     * 前端传递一组商品ID，后端进行批量上下架处理，处理后给前端返回处理的条数
     * @param ids 根据ids处理多个请求参数，同时上架
     */
    int putMany(Long[] ids);

    /**
     * 上架商品
     * @param id 根据id修改数据
     */
    boolean put(String id);

    /**
     * 下架商品
     * @param id
     */
    boolean pull(String id);

    /**
     * @param tbSpu 根据id修改审核状态为1则上架状态也修改为1
     */
    boolean audit(TbSpu tbSpu);

    /**
     * 数据回显
     * @param id 查询id
     * @return 回显数据
     */
    Goods findGoodsById(String id);

    /**
     * 保存商品
     * @param goods 商品组合实体类
     */
    boolean saveGoods(Goods goods);


    /**
    * 查询所有
    */
    List<TbSpu> queryAll();

    /**
     *
     * @param pageNum  页号
     * @param pageSize 页大小
     * @param tbSpu 查询条件
     * @return 查询未审核的商品
     */
    PageUtil<TbSpu> queryAudit(Integer pageNum,Integer pageSize, TbSpu tbSpu);

    /**
    * 分页查询所有
    */
    PageUtil<TbSpu> findListAll(Integer pageNum, Integer pageSize);


    /**
    * 按条件分页查询
    */
    PageUtil<TbSpu> pageQueryByAll(Integer pageNum,Integer pageSize, TbSpu tbSpu);


    /**
    * 添加
    */
    boolean saveTbSpu(TbSpu tbSpu);


    /**
    * 修改
    */
    boolean updateTbSpu(TbSpu tbSpu);

    /**
    * 删除
    */
    boolean deleteById(Integer id);


    /**
    * 根据id查询
    */
    TbSpu findById(String id);

    /**
     * @return 热卖商品
     */
    List<Map> bestgoods();

    /*
    * 热卖缓存
    * */
    public void bestcache();


    /**
     * // 显示菜单首页新品显示
     * */
    List<Map> newproduct();

    /**
     * 猜你喜欢
     * */
    List<Map> like();

    PageUtil<TbSpu> adQueryAll(Integer pageNum, Integer pageSize, TbSpu tbSpu);

    //修改订单的adstatus状态
    int updateAdStatus (String spuId);
}
